Fix memory leak in libxenstore python bindings
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 1 Oct 2009 11:26:15 +0000 (12:26 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 1 Oct 2009 11:26:15 +0000 (12:26 +0100)
Temporary tuple0 python object was not freed at the end of
xspy_set_permissions() in case no error occurred. To reduce code
duplication, this path reuses the cleanup code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
tools/python/xen/lowlevel/xs/xs.c

index ad47a279a4451a9b746021e5b94a3030edc9c643..7f28aa291a8fdbb82bca9374ebecbd451170ce6d 100644 (file)
@@ -324,6 +324,7 @@ static PyObject *xspy_set_permissions(XsHandle *self, PyObject *args)
 
     xs_transaction_t th;
     char *thstr;
+    PyObject *ret = NULL;
 
     if (!xh)
         goto exit;
@@ -380,14 +381,13 @@ static PyObject *xspy_set_permissions(XsHandle *self, PyObject *args)
         goto exit;
     }
 
-    free(xsperms);
     Py_INCREF(Py_None);
-    return Py_None;
+    ret = Py_None;
 
  exit:
     Py_XDECREF(tuple0);
     free(xsperms);
-    return NULL;
+    return ret;
 }
 
 #define xspy_watch_doc "\n"                                            \